﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EntGuayasSLA.BL;
using EntGuayasSLA.BL.Archivos.Pdf;
using EntGuayasSLA.BL.Listas;
using EntGuayasSLA.BL.Listas.Criterias;
using Ext.Net;

namespace EGuayas.Web.Usuario
{
    public partial class pgActivarUsuarios : pgBase
    {
        #region Set-Session
        protected ArchivoLista ListaDocLectura
        {
            get
            {
                return ((ArchivoLista)Session[SessionPage.PageUserAct + "_pgPromotorLista2"]);
            }

        }
        #endregion Set-Session
       

        protected void Page_Load(object sender, EventArgs e)
        {
            try{
            if (!X.IsAjaxRequest)
            {
                //Setear sesion para activar usuarios-promotores
                SetSessionPage pgSession = new SetSessionPage(SessionPage.PageUserAct, Valores.PageEvento_Lectura);
                this.hddIdPageSession.SetValue(SessionPage.PageUserAct);
            }
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
        
        [DirectMethod]
        public UsuarioLista BindData()
        {
            try
            {
                UsuarioSingleCriteria userCriteria = UsuarioSingleCriteria.NewUsuarioCriteria();
                userCriteria.Estado = Valores.Codigo_Estado_NoActivo+","+Valores.Codigo_Estado_Notificado;
                userCriteria.CodigoRol = Valores.Codigo_Rol_Promotor;
                return UsuarioLista.GetUsuarioLista(userCriteria);
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
            return null;
       }

       protected void btnRevisar_Click(object sender, DirectEventArgs e)
       { 
         try
         {
             // TODO: Falta completar y testing 
             var id = e.ExtraParams["hdId"];
             UpdateEstadoUser(id, Valores.Codigo_Estado_Activo);
             gpDocumentosLoadUser.GetStore().Reload();
             btnRevisar.Disable();
             //
             X.Js.Call("pgFn.ActivarUsuarioPanel");// Para ejecute envento Modificar=> Si/No

             X.Msg.Show(new MessageBoxConfig
             {
                 Buttons = MessageBox.Button.OK,
                 Icon = MessageBox.Icon.INFO,
                 Title = "Información",
                 Message = string.Format("{0}", "Usuario Activado")
             });
             Usuarios user = Usuarios.GetEditableRoot(id);
             SendMail(user);
         }
         catch (Exception ex)
         {
             RegistrarLog(ex);
         }

       }

       private void SendMail(Usuarios user)
       {
           try
           {
           string PersonaIdTmp = this.hddIdPersonaTmp.Value.ToString();
           Promotores objPromotor = Promotores.GetEditableRoot(Guid.Parse(PersonaIdTmp));
           var sTxtMail = "Estimado Usuario:<br/><br/>";
           sTxtMail += "Bienvenido a Plataforma de Licenciamiento, Auditoría y Seguimiento Ambiental del Gobierno Provincial del Guayas denominado Plataforma PLASA.<br/><br/>";


sTxtMail += "A través de esta plataforma tecnológica usted podrá realizar tanto la Gestión de Licencias Ambientales como Auditorías Ambientales, evitando así, acudir a las instalaciones de forma física. Está garatizada la privacidad de su información y los diversos procesos serán eficientes y rápidos.<br/><br/>";

sTxtMail += "Su usuario ha sido activado correctamente.<br/>";

sTxtMail = ClaveIngreso(user, sTxtMail);
sTxtMail = PieCorreo(sTxtMail);
MyMail.Enviar("", objPromotor.Email, "Usuario activado", sTxtMail, true, "Notificación de usuario activado correctamente");
           }
           catch (Exception ex)
           {
               RegistrarLog(ex);
           }
       }
        /*
        private static string ClaveIngreso(Usuarios user, string sTxtMail)
        {
            sTxtMail +=
                "<br/><br/>Los datos necesarios para su ingreso a la Plataforma PLASA del Gobierno Provincial del Guayas son:<br/><br/>";

            sTxtMail +=
                string.Format(
                    "<br/><b>A continuación <a href=\"{0}pgLogin.aspx\">Ingrese aquí</a> para ir a la Plataforma Tecnológica PLASA.</b>",
                    ConfigurationManager.AppSettings.Get("Url"));
            sTxtMail += string.Format("<br/>USUARIO: {0}<br/>CLAVE: {1}<br/>", user.Login, user.Clave);
            return sTxtMail;
        }

        private static string PieCorreo(string sTxtMail)
        {
            sTxtMail +=
                string.Format(
                    "<br/><br/>Este e-mail es autogenerado por favor no responder al mismo. <br/><br/>Dirección de Medio Ambiente<br/>GOBIERNO PROVINCIAL DEL GUAYAS");
            return sTxtMail;
        }
        */
       private  void UpdateEstadoUser(string id,string estado)
       {
           try{
           Usuarios user = Usuarios.GetEditableRoot(id);
           user.Estado   = estado;
           user.Save();
           }
           catch (Exception ex)
           {
               RegistrarLog(ex);
           }
           
       }
       protected void btnNotificar_Click(object sender, DirectEventArgs e)
       {
           try
           {
               string PersonaIdTmp = this.hddIdPersonaTmp.Value.ToString();
               Usuarios user = Usuarios.GetEditableRoot(e.ExtraParams["hdId"]);

               Promotores objPromotor = Promotores.GetEditableRoot(Guid.Parse(PersonaIdTmp));
               string sTxtMail = string.Format("Buen día Sr(a) {0} {1}:<br/>{2}", objPromotor.Nombre, objPromotor.Apellido, "Se le comunica de manera más comedida, que se modifique los archivos que a continuación se listan, con el proposito de <b>ACTIVAR</b> su usuario que le corresponde.<br/>");
            
               sTxtMail += "<ul>";
               foreach (ArchivoInfo item in ListaDocLectura)
               { 
                   if (item.SubirNuevo=="S")
                   {
                       sTxtMail += string.Format("<li><i>{0}</i>:{1}  <b>{2}</b></li>", item.Nombre, item.Descripcion, item.Comentarios);                    
                   }
               }
               sTxtMail += "</ul>";

               sTxtMail = ClaveIngreso(user, sTxtMail);
               sTxtMail = PieCorreo(sTxtMail);


               MyMail.Enviar("", objPromotor.Email, "Notificación de archivos para activación de usuario", sTxtMail, true, "Notificación activar usuario");


               var id = e.ExtraParams["hdId"];
               UpdateEstadoUser(id, Valores.Codigo_Estado_Pendiente);

               gpDocumentosLoadUser.GetStore().Reload();
               btnNotificar.Disable();
               X.Js.Call("pgFn.ActivarUsuarioPanel");// Para ejecute envento Modificar=> Si/No
               X.Msg.Show(new MessageBoxConfig
               {
                   Buttons = MessageBox.Button.OK,
                   Icon = MessageBox.Icon.INFO,
                   Title = "Información",
                   Message = string.Format("{0}", "Usuario Notificado")
               });
           }
           catch (Exception ex)
           {
               X.Msg.Show(new MessageBoxConfig
               {
                   Buttons = MessageBox.Button.OK,
                   Icon = MessageBox.Icon.ERROR,
                   Title = "Información",
                   Message = string.Format("{0}", "Error al Notificar usuario")
               });
               RegistrarLog(ex);
           }

       }
           

    }
}